<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>20-利用构造函数创建对象</title>
    <script>
        //当创建类似的对象的时候，会有部分重复的属性和方法被多次重写，这样不好
        //所以我们可以利用函数的方法，让重复的方法和属性只用写一次，这样的函数就叫做构造函数
        //构造函数里封装的不是普通代码，而是对象
        //构造函数，就是把对象里面一些相同属性和方法抽出来封装到函数里面
        //构造函数的语法格式
        // function 构造函数名(){
        //     this.属性 = 值;
        //     this.方法 = function(){}
        // }
        //调用
        // new 构造函数名();
        //注意名字首字母大写
        function Star(uname,age,sex){
            this.name=uname;
            this.age=age;
            this.sex=sex;
            this.sing= function(song){
                console.log(song);
            }
        }
        var ldh = new Star('刘德华',18,'男');//这样就有了一个ldh对象
        ldh.sing('冰雨');
        //利用构造函数创建对象的过程我们称为 对象的实例化

        //对象的遍历
        //用for...in 对对象的属性进行循环操作（也可以对数组进行遍历，但是最好只用于对象）
        //格式：
        // for(变量 in 对象){}
        for(var i in ldh){
            console.log(i);         //这样输出的是属性名
            console.log(ldh[i]);    //这样输出的是属性值
        }
    </script>
</head>
<body>
    
</body>
</html>